home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / CHARACTE.I < prev    next >
Encoding:
Modula Implementation  |  1990-11-10  |  6.5 KB  |  264 lines

  1. IMPLEMENTATION MODULE Characters;
  2. (*$Y+,C-,L-,N+*)
  3.  
  4. FROM SYSTEM IMPORT ASSEMBLER;
  5.  
  6. PROCEDURE isASCII7 (c: CHAR): BOOLEAN;
  7.   BEGIN
  8.     ASSEMBLER
  9.         TST.W   -(A3)
  10.         SPL     D0
  11.         ANDI    #1,D0
  12.         MOVE    D0,(A3)+
  13.     END
  14.   END isASCII7;
  15.  
  16. PROCEDURE isLetter (c: CHAR): BOOLEAN;
  17.   BEGIN
  18.     ASSEMBLER
  19.         SUBQ.L  #1,A3
  20.         MOVE.B  -(A3),D0
  21.         CMPI.B  #32,D0
  22.         BCS     n
  23.         CMPI.B  #127,D0
  24.         BEQ     n
  25.         MOVE    #1,(A3)+
  26.         RTS
  27.      n: CLR     (A3)+
  28.     END
  29.   END isLetter;
  30.  
  31. PROCEDURE isControl (c: CHAR): BOOLEAN;
  32.   BEGIN
  33.     ASSEMBLER
  34.         SUBQ.L  #1,A3
  35.         MOVE.B  -(A3),D0
  36.         CMPI.B  #32,D0
  37.         BCS     y
  38.         CMPI.B  #127,D0
  39.         BEQ     y
  40.         CLR     (A3)+
  41.         RTS
  42.      y: MOVE    #1,(A3)+
  43.     END
  44.   END isControl;
  45.  
  46. PROCEDURE isDigit (c: CHAR): BOOLEAN;
  47.   BEGIN
  48.     ASSEMBLER
  49.         SUBQ.L  #1,A3
  50.         MOVE.B  -(A3),D0
  51.         CMPI.B  #'0',D0
  52.         BCS     n
  53.         CMPI.B  #'9',D0
  54.         BHI     n
  55.         MOVE    #1,(A3)+
  56.         RTS
  57.      n: CLR     (A3)+
  58.     END
  59.   END isDigit;
  60.  
  61. PROCEDURE isNum (c: CHAR): BOOLEAN;
  62.   BEGIN
  63.     ASSEMBLER
  64.         JMP     isDigit
  65.     END
  66.   END isNum;
  67.  
  68. PROCEDURE isHexDigit (c: CHAR): BOOLEAN;
  69.   BEGIN
  70.     ASSEMBLER
  71.         SUBQ.L  #1,A3
  72.         MOVE.B  -(A3),D0
  73.         CMPI.B  #'0',D0
  74.         BCS     n
  75.         CMPI.B  #'9',D0
  76.         BLS     y
  77.         CMPI.B  #'A',D0
  78.         BCS     n
  79.         CMPI.B  #'Z',D0
  80.         BLS     y
  81.         CMPI.B  #'a',D0
  82.         BCS     n
  83.         CMPI.B  #'z',D0
  84.         BHI     n
  85.      y: MOVE    #1,(A3)+
  86.         RTS
  87.      n: CLR     (A3)+
  88.     END
  89.   END isHexDigit;
  90.  
  91. PROCEDURE isAlpha (c: CHAR): BOOLEAN;
  92.   BEGIN
  93.     ASSEMBLER
  94.         SUBQ.L  #1,A3
  95.         MOVE.B  -(A3),D0
  96.         BMI     s
  97.         CMPI.B  #'A',D0
  98.         BCS     n
  99.         CMPI.B  #'z',D0
  100.         BHI     n
  101.         CMPI.B  #'Z',D0
  102.         BLS     y
  103.         CMPI.B  #'a',D0
  104.         BCS     n
  105.      y: MOVE    #1,(A3)+
  106.         RTS
  107.      s: CMPI.B  #$9A,D0
  108.         BLS     y
  109.         CMPI.B  #$9E,D0
  110.         BEQ     y
  111.         CMPI.B  #$A0,D0
  112.         BCS     n
  113.         CMPI.B  #$A7,D0
  114.         BLS     y
  115.         CMPI.B  #$B0,D0
  116.         BCS     n
  117.         CMPI.B  #$B8,D0
  118.         BLS     y
  119.         CMPI.B  #$C1,D0
  120.         BHI     n
  121.         CMPI.B  #$C0,D0
  122.         BCC     y
  123.      n: CLR     (A3)+
  124.     END
  125.   END isAlpha;
  126.  
  127. PROCEDURE isAlphaNum (c: CHAR): BOOLEAN;
  128.   BEGIN
  129.     ASSEMBLER
  130.         SUBQ.L  #1,A3
  131.         MOVE.B  -(A3),D0
  132.         BMI     s
  133.         CMPI.B  #'0',D0
  134.         BCS     n
  135.         CMPI.B  #'9',D0
  136.         BLS     y
  137.         CMPI.B  #'A',D0
  138.         BCS     n
  139.         CMPI.B  #'z',D0
  140.         BHI     n
  141.         CMPI.B  #'Z',D0
  142.         BLS     y
  143.         CMPI.B  #'a',D0
  144.         BCS     n
  145.      y: MOVE    #1,(A3)+
  146.         RTS
  147.      s: CMPI.B  #$9A,D0
  148.         BLS     y
  149.         CMPI.B  #$9E,D0
  150.         BEQ     y
  151.         CMPI.B  #$A0,D0
  152.         BCS     n
  153.         CMPI.B  #$A7,D0
  154.         BLS     y
  155.         CMPI.B  #$B0,D0
  156.         BCS     n
  157.         CMPI.B  #$B8,D0
  158.         BLS     y
  159.         CMPI.B  #$C1,D0
  160.         BHI     n
  161.         CMPI.B  #$C0,D0
  162.         BCC     y
  163.      n: CLR     (A3)+
  164.     END
  165.   END isAlphaNum;
  166.  
  167. PROCEDURE isSpace (c: CHAR): BOOLEAN;
  168.   BEGIN
  169.     ASSEMBLER
  170.         SUBQ.L  #1,A3
  171.         MOVE.B  -(A3),D0
  172.         CMPI.B  #32,D0
  173.         BEQ     y
  174.         BHI     n
  175.         CMPI.B  #9,D0
  176.         BCS     n
  177.         CMPI.B  #13,D0
  178.         BHI     n
  179.      y: MOVE    #1,(A3)+
  180.         RTS
  181.      n: CLR     (A3)+
  182.     END
  183.   END isSpace;
  184.  
  185. PROCEDURE isGreek (c: CHAR): BOOLEAN;
  186.   BEGIN
  187.     ASSEMBLER
  188.         SUBQ.L  #1,A3
  189.         MOVE.B  -(A3),D0
  190.         CMPI.B  #$E0,D0
  191.         BCS     n
  192.         CMPI.B  #$F0,D0
  193.         BCC     n
  194.         MOVE    #1,(A3)+
  195.         RTS
  196.      n: CLR     (A3)+
  197.     END
  198.   END isGreek;
  199.  
  200. PROCEDURE isUpper (c: CHAR): BOOLEAN;
  201.   BEGIN
  202.    ASSEMBLER
  203.         SUBQ.L  #1,A3
  204.         CLR     D0
  205.         MOVE.B  -(A3),D0
  206.         LEA     tbl(PC),A0
  207.         MOVE.B  0(A0,D0.W),D0
  208.         MOVE    D0,(A3)+
  209.         RTS
  210.  
  211.     tbl DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  212.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  213.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  214.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  215.         DC.B  0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  216.         DC.B  1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0
  217.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  218.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  219.         DC.B  1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
  220.         DC.B  1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0
  221.         DC.B  0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
  222.         DC.B  0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0
  223.         DC.B  0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  224.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  225.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  226.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  227.     END
  228.   END isUpper;
  229.  
  230.  
  231. PROCEDURE isLower (c: CHAR): BOOLEAN;
  232.   BEGIN
  233.    ASSEMBLER
  234.         SUBQ.L  #1,A3
  235.         CLR     D0
  236.         MOVE.B  -(A3),D0
  237.         LEA     tbl(PC),A0
  238.         MOVE.B  0(A0,D0.W),D0
  239.         MOVE    D0,(A3)+
  240.         RTS
  241.  
  242.     tbl DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  243.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  244.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  245.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  246.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  247.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  248.         DC.B  0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  249.         DC.B  1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0
  250.         DC.B  0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0
  251.         DC.B  0,1,0,1,1,1,1,1,1,0,0,0,0,0,1,0
  252.         DC.B  1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0
  253.         DC.B  1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0
  254.         DC.B  1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  255.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  256.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  257.         DC.B  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  258.     END
  259.   END isLower;
  260.  
  261. END Characters.
  262. ə
  263. (* $0000105E$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$0000105E$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22$FFF6BC22Ç$00000029T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$FFEDB15C$0000105E$000013FA$00001452$00000056$0000004A$00000037$00000029$000004F5$000006B3$FFF68A85$00000611$00000648$00000611$00000648$0000065FáÇÇ*)
  264.